package 蓝桥杯练习;

import java.util.*;

public class Main2 {
    static Scanner sc = new Scanner(System.in);
    static String pair = sc.nextLine();		//密钥
    static List<Character> list = new ArrayList<Character>();	//线性表

    static char[][] getMatrix(String pair) {	//获取密钥矩阵
        int length = 0;
        char[][] matrix = new char[5][5];

        for (char i = 'a'; i <= 'z'; i++) {
            list.add(i);	//将26个字母放入线性表
        }

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                if (length < pair.length()) {
                    char t = pair.charAt(length++);
                    matrix[i][j] = t;			//将密钥字母一个个放入矩阵中
                    list.remove((Character) t);	//将放入矩阵中的字母从线性表中移除
                } else {
                    matrix[i][j] = list.remove(0);	//将线性表中的字母填充进矩阵中，然后移除该字母
                }
            }
        }

        return matrix;
    }

    static String encoding(String s) {
        String result = "";
        char[][] matrix = getMatrix(pair);
        Map<String, Integer> map = new HashMap<String, Integer>();	//获取字母对的x,y轴的坐标

        for (int k = 0; k < s.length(); k++) {
            char t1 = s.charAt(k++);
            char t2;
            if (s.length() % 2 != 0 && k == s.length()) {	//最后如果只有一个人字母则直接加入结果
                result += t1;
                break;
            } else
                t2 = s.charAt(k);

            if (list.contains(t1) || list.contains(t2)) {	//如果字母对中任一字母在线性表中，
                //即代表不再矩阵中，则将字母对直接加入结果
                result += t1 + "" + t2;
                continue;
            }

            if (t1 == t2) {
                result += t1 + "" + t2;					//如果字母对相同，则直接加入结果
            } else {
                for (int i = 0; i < 5; i++) {
                    for (int j = 0; j < 5; j++) {
                        if (matrix[i][j] == t1) {
                            map.put("t1_x", i);
                            map.put("t1_y", j);
                        }
                        if (matrix[i][j] == t2) {
                            map.put("t2_x", i);
                            map.put("t2_y", j);
                        }
                    }
                }
                if ((Integer) map.get("t1_x") == (Integer) map.get("t2_x")	//如果字母对在同一个行或列则交换字母后加入结果
                        || (Integer) map.get("t1_y") == (Integer) map
                        .get("t2_y")) {
                    result += t2 + "" + t1;
                } else {						//如果字母对成一个矩形，调换两个字母的y轴坐标后获取在矩阵中的值加入结果
                    result += matrix[(Integer) map.get("t1_x")][(Integer) map
                            .get("t2_y")]
                            + ""
                            + matrix[(Integer) map.get("t2_x")][(Integer) map
                            .get("t1_y")];
                }
            }
        }

        return result;
    }

    public static void main(String[] args) {
        String s2 = sc.nextLine();
        String result = encoding(s2);
        System.out.println(result);
    }
}
